package com.pospi.pospihold.sprint;

import android.content.Context;
import android.graphics.Bitmap;

import com.google.gson.Gson;
import com.pospi.pospihold.dto.GoodsDto;
import com.pospi.pospihold.dto.OrderBeen;
import com.pospi.pospihold.dto.OrderDto;
import com.pospi.pospihold.dto.PayBeen;
import com.pospi.pospihold.util.DoubleSave;
import com.pospi.pospihold.util.GetData;
import com.pospi.pospihold.util.PareseJson;
import com.pospi.pospihold.util.SaveOrderInfo;

import java.util.ArrayList;
import java.util.List;

import static android.content.Context.MODE_PRIVATE;

/**
 * Created by acer on 2018/9/27.
 */

public class StarPrintHelper {
    public static Bitmap creatImage(GoodsDto dto , Context context) {
        int whichOne = context.getSharedPreferences("islogin", MODE_PRIVATE).getInt("which", 0);
        String cashier_name = new PareseJson().parese(
                 context.getSharedPreferences("cashierMsgDtos", MODE_PRIVATE)
                        .getString("cashierMsgDtos", ""))
                .get(whichOne).getName();
        try {
            ArrayList<StringBitmapParameter> mParameters = new ArrayList<>();

//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("商户存根联"));
//            mParameters.add(new StringBitmapParameter("用户名称(MERCHANT NAME):江苏东大集成电路系统工程技术有限公司"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("商户编号(MERCHANT NO): 304301057328106"));
//            mParameters.add(new StringBitmapParameter("终端编号(TEBMINAL NO): 00706937"));
//            mParameters.add(new StringBitmapParameter("操作员号: 01"));
//            mParameters.add(new StringBitmapParameter("卡号(CARD NO)"));
//            mParameters.add(new StringBitmapParameter("12345678901212(C)", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("发卡行(ISSUER):工商银行"));
//            mParameters.add(new StringBitmapParameter("收单行(ACQUIRER):华夏银行"));
//            mParameters.add(new StringBitmapParameter("交易类别(TXN TYPE):"));
//            mParameters.add(new StringBitmapParameter(" 消费撤销(VOID)"));
//            mParameters.add(new StringBitmapParameter("-------------------------"));
//            mParameters.add(new StringBitmapParameter("持卡人签名CARD HOLDER SIGNATURE:"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));

            mParameters.add(new StringBitmapParameter("点菜单", BitmapUtil.IS_CENTER, BitmapUtil.IS_LARGE));
            mParameters.add(new StringBitmapParameter("-----------------------------"));
//            mParameters.add(new StringBitmapParameter("小票号：123456789"));
            mParameters.add(new StringBitmapParameter("桌  台："+dto.getTableMsg()));
            mParameters.add(new StringBitmapParameter("操作员："+cashier_name));
            mParameters.add(new StringBitmapParameter("时间："+ GetData.getHHmmssTimet()));
            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("名称："+dto.getName()));
            mParameters.add(new StringBitmapParameter("数量："+dto.getNum()));
            mParameters.add(new StringBitmapParameter("备注："+dto.getLabel()));
            mParameters.add(new StringBitmapParameter("\n"));
            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("发卡行(ISSUER)"));
//            mParameters.add(new StringBitmapParameter("农业银行", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("收单行(ACQUIRER)"));
//            mParameters.add(new StringBitmapParameter("农业银行", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("卡号(CARD NO)"));
//            mParameters.add(new StringBitmapParameter("12345678901212(C)", BitmapUtil.IS_RIGHT, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("卡有效期(EXP DATE)     2023/10"));
//            mParameters.add(new StringBitmapParameter("交易类型(TXN TYPE)"));
//            mParameters.add(new StringBitmapParameter("消费", BitmapUtil.IS_RIGHT, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("-------------------------"));
//            mParameters.add(new StringBitmapParameter("交易金额未超过300.00元，无需签名"));
//
//            ArrayList<StringBitmapParameter> mParametersEx = new ArrayList<>();/**如果是空的列表，也可以传入，会打印空行*/
//            mParametersEx.add(new StringBitmapParameter("\n"));
//            mParametersEx.add(new StringBitmapParameter("\n"));
//            mParametersEx.add(new StringBitmapParameter("\n"));

            Bitmap textBitmap = BitmapUtil.StringListtoBitmap(context, mParameters);
//            Bitmap textBitmap2 = BitmapUtil.StringListtoBitmap(getContext(), mParametersEx);
//            Bitmap mergeBitmap3 = BitmapUtil.addBitmapInFoot(mergeBitmap2, textBitmap2);

//            Log.e("fmx", "argb_8888 =  " + mergeBitmap3.getHeight() * mergeBitmap3.getWidth() * 32);
//            Log.e("fmx", "rgb_565 =  " + mergeBitmap3.getHeight() * mergeBitmap3.getWidth() * 16);
            return textBitmap;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Bitmap creatImage2(GoodsDto dto , Context context) {
        int whichOne = context.getSharedPreferences("islogin", MODE_PRIVATE).getInt("which", 0);
        String cashier_name = new PareseJson().parese(
                context.getSharedPreferences("cashierMsgDtos", MODE_PRIVATE)
                        .getString("cashierMsgDtos", ""))
                .get(whichOne).getName();
        try {
            ArrayList<StringBitmapParameter> mParameters = new ArrayList<>();

//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("商户存根联"));
//            mParameters.add(new StringBitmapParameter("用户名称(MERCHANT NAME):江苏东大集成电路系统工程技术有限公司"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("商户编号(MERCHANT NO): 304301057328106"));
//            mParameters.add(new StringBitmapParameter("终端编号(TEBMINAL NO): 00706937"));
//            mParameters.add(new StringBitmapParameter("操作员号: 01"));
//            mParameters.add(new StringBitmapParameter("卡号(CARD NO)"));
//            mParameters.add(new StringBitmapParameter("12345678901212(C)", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("发卡行(ISSUER):工商银行"));
//            mParameters.add(new StringBitmapParameter("收单行(ACQUIRER):华夏银行"));
//            mParameters.add(new StringBitmapParameter("交易类别(TXN TYPE):"));
//            mParameters.add(new StringBitmapParameter(" 消费撤销(VOID)"));
//            mParameters.add(new StringBitmapParameter("-------------------------"));
//            mParameters.add(new StringBitmapParameter("持卡人签名CARD HOLDER SIGNATURE:"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));

            mParameters.add(new StringBitmapParameter("点菜单", BitmapUtil.IS_CENTER, BitmapUtil.IS_LARGE));
            mParameters.add(new StringBitmapParameter("-----------------------------"));
//            mParameters.add(new StringBitmapParameter("小票号：123456789"));
            mParameters.add(new StringBitmapParameter("桌  台："+dto.getTableMsg()));
            mParameters.add(new StringBitmapParameter("操作员："+cashier_name));
            mParameters.add(new StringBitmapParameter("时间："+ GetData.getHHmmssTimet()));
            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("名称："+dto.getName()));
            mParameters.add(new StringBitmapParameter("数量："+dto.getNum()));
            mParameters.add(new StringBitmapParameter("备注："+dto.getLabel()));
            mParameters.add(new StringBitmapParameter("\n"));
            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("发卡行(ISSUER)"));
//            mParameters.add(new StringBitmapParameter("农业银行", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("收单行(ACQUIRER)"));
//            mParameters.add(new StringBitmapParameter("农业银行", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("卡号(CARD NO)"));
//            mParameters.add(new StringBitmapParameter("12345678901212(C)", BitmapUtil.IS_RIGHT, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("卡有效期(EXP DATE)     2023/10"));
//            mParameters.add(new StringBitmapParameter("交易类型(TXN TYPE)"));
//            mParameters.add(new StringBitmapParameter("消费", BitmapUtil.IS_RIGHT, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("-------------------------"));
//            mParameters.add(new StringBitmapParameter("交易金额未超过300.00元，无需签名"));
//
//            ArrayList<StringBitmapParameter> mParametersEx = new ArrayList<>();/**如果是空的列表，也可以传入，会打印空行*/
//            mParametersEx.add(new StringBitmapParameter("\n"));
//            mParametersEx.add(new StringBitmapParameter("\n"));
//            mParametersEx.add(new StringBitmapParameter("\n"));

            Bitmap textBitmap = BitmapUtil.StringListtoBitmap(context, mParameters);
//            Bitmap textBitmap2 = BitmapUtil.StringListtoBitmap(getContext(), mParametersEx);
//            Bitmap mergeBitmap3 = BitmapUtil.addBitmapInFoot(mergeBitmap2, textBitmap2);

//            Log.e("fmx", "argb_8888 =  " + mergeBitmap3.getHeight() * mergeBitmap3.getWidth() * 32);
//            Log.e("fmx", "rgb_565 =  " + mergeBitmap3.getHeight() * mergeBitmap3.getWidth() * 16);
            return textBitmap;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static Bitmap creatImageOrder(OrderBeen orderDto , Context context) {
        String storeName = context.getSharedPreferences("StoreMessage", Context.MODE_PRIVATE).getString("Name", "");
        int whichOne = context.getSharedPreferences("islogin", MODE_PRIVATE).getInt("which", 0);
        String cashier_name = new PareseJson().parese(
                context.getSharedPreferences("cashierMsgDtos", MODE_PRIVATE)
                        .getString("cashierMsgDtos", ""))
                .get(whichOne).getName();
        try {
            ArrayList<StringBitmapParameter> mParameters = new ArrayList<>();
            mParameters.add(new StringBitmapParameter(storeName, BitmapUtil.IS_CENTER, BitmapUtil.IS_LARGE));
            mParameters.add(new StringBitmapParameter("单据号：" + orderDto.getOrderNo()));
//            mParameters.add(new StringBitmapParameter("小票号：123456789"));
            mParameters.add(new StringBitmapParameter("收银员：" + cashier_name));
            mParameters.add(new StringBitmapParameter("单据日期：" + GetData.getDataTime()));

            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("品名         单价        数量 "));


            List<GoodsDto> goodsDtos = SaveOrderInfo.changeToList(orderDto.getGoodsDetail());
            int numTotal = 0;
            double moneyTotal = 0;
            double money = 0.00;
            double disountTotal = 0.00;
            double discount = 0.00;
            for (int i = 0; i < goodsDtos.size(); i++) {
                GoodsDto goodsDto = goodsDtos.get(i);
                numTotal += goodsDto.getNum();
                discount = goodsDto.getDiscount();
                disountTotal += discount;
                money = goodsDto.getNum() * goodsDto.getPrice() - discount;
                moneyTotal += money;
                mParameters.add(new StringBitmapParameter(goodsDto.getName()));
                mParameters.add(new StringBitmapParameter("            "+goodsDto.getPrice() + "         " + goodsDto.getNum()));
            }
            PayBeen payBeen = new Gson().fromJson(orderDto.getPayDetail(), PayBeen.class);
            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("合计：" + DoubleSave.doubleSaveTwo(moneyTotal) + "元"));
            mParameters.add(new StringBitmapParameter("实收：" + DoubleSave.doubleSaveTwo(moneyTotal)+"("+payBeen.getName()+")"));
            mParameters.add(new StringBitmapParameter("\n"));
            mParameters.add(new StringBitmapParameter("---------欢迎下次光临---------"));
            mParameters.add(new StringBitmapParameter("\n"));
            Bitmap textBitmap = BitmapUtil.StringListtoBitmap(context, mParameters);

            return textBitmap;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
